home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / game / wb / Piggy.lha / Piggy next >
Text File  |  2001-04-28  |  13KB  |  375 lines

  1. /**/
  2. IF ~SHOW(l,'rexxsupport.library') THEN CALL ADDLIB('rexxsupport.library',0,-30,0)
  3. CALL OPEN(OUT,'con:20/20/640/165/Piggy rexx by Kevin R. Sherman/nosize/plain',W)
  4. esc = x2c('1B')
  5. cls = x2c(1B63)
  6. LF = '0A'x
  7. quote.1 = "Come on, baby needs a new pair of shoes!"
  8. quote.2 = "And the dice say....."
  9. quote.3 = "One more time with fealing."
  10. quote.4 = "Hay, are these dice loaded!?!?!"
  11. quote.5 = "Ooooohhhhhh, I'm HOT tonight!"
  12. quote.6 = "Come on baby give be those boxcars!"
  13. quote.7 = "Gotta be cool now, gotta take care...."
  14. quote.8 = "Think positive thoughts. The dice are my friend. The dice are my..."
  15. quote.9 = "And there coming out of there shoot...."
  16. quote.10 = "Look out there hot stuff coming through...."
  17. quote.11 = "Please GOD give me a good roll and I'll never ask for anything again."
  18. quote.12 = "Rattle, rattle, rattle and the dice say...."
  19. quote.13 = "You sure your not cheating?"
  20. quote.14 = "Come on, come on... Looking for that hot streak!"
  21. quote.15 = "Like shooting fish in a pond."
  22. quote.16 = "Oooh, maybe I should't roll this time."
  23. quote.17 = "Fealing lucky punk? Well do you?!"
  24. quote.18 = "Is it hot in here or is it just the dice?"
  25. quote.19 = "What were the rules again?"
  26. quote.20 = "OK, just one more time."
  27.  
  28. MAIN:
  29.   CALL HEADER
  30.   CALL START
  31.   CALL FINISHED
  32.  
  33. FINISHED:
  34.   CALL CLOSE(OUT)
  35. EXIT
  36.  
  37. START:
  38.   CALL WRITECH(OUT,"Continue, quit, or help? Enter=C/h/q: "esc'[J')
  39.   CALL CLEARLN
  40.   SELECT
  41.     WHEN answer = "C" | answer =  "" THEN
  42.       DO
  43.         COMPUTERTOTAL = 0
  44.         USERTOTAL = 0
  45.         RANDOM(,, TIME(s))
  46.         beginer = RANDOM(1,2)
  47.         IF beginer = 1 THEN firstplayer = COMPUTER
  48.         ELSE firstplayer = USER
  49.         CALL WRITELN(OUT,"The" firstplayer "will go first this time.")
  50.         CALL DELAY(200)
  51.         player = firstplayer
  52.         DO FOREVER
  53.           IF player = "COMPUTER" THEN CALL computerroll
  54.           IF player = "USER" THEN  CALL userroll
  55.         END
  56.       END
  57.     WHEN answer = "H" THEN
  58.       DO
  59.         CALL SHOW_HELP
  60.         CALL MAIN
  61.       END
  62.     WHEN answer = "Q" THEN CALL FINISHED
  63.     OTHERWISE
  64.       DO
  65.         CALL WRITECH(OUT,esc'[1A')
  66.         CALL START
  67.       END
  68.   END
  69. RETURN
  70.  
  71. GAME_TOTAL:
  72.   CALL WRITELN(OUT,cls)
  73.   CALL WRITELN(OUT,"Game Totals: Computer:" COMPUTERTOTAL "      You:" USERTOTAL "    First player was" firstplayer||LF)
  74. RETURN
  75.  
  76. HEADER:
  77.   CALL WRITELN(OUT,cls)
  78.   CALL WRITELN(OUT,"                                Introducing")
  79.   CALL WRITELN(OUT,"                             PIGGY Version 1.0"LF)
  80.   CALL WRITELN(OUT,"                            by Kevin R. Sherman"LF)
  81.   CALL WRITELN(OUT,"                          Original game & concept")
  82.   CALL WRITELN(OUT,"                             by Basil Barnes"LF)
  83.   CALL WRITELN(OUT,"                       A very adictive game of dice."COPIES(LF,2))
  84. RETURN
  85.  
  86. CLEARLN:
  87.   DO TypeAhead = 0 to LINES(OUT) - 1
  88.     Junk = READLN(OUT)
  89.   END
  90.   answer = UPPER(READCH(OUT,1))
  91.   IF C2X(answer) = '0A' THEN answer = ''
  92. RETURN
  93.  
  94. COMPUTERROLL:
  95.   IF USERTOTAL >= 150 & firstplayer = "COMPUTER" THEN CALL GAME_END
  96.   IF COMPUTERTOTAL >= 150 & firstplayer = "USER" THEN CALL GAME_END
  97.   rolltotal = 0
  98.   DO RollNum = 1 TO RANDOM(2,10)
  99.     IF USERTOTAL < 150 THEN
  100.       DO
  101.         CALL SHOW_DICE
  102.         SELECT
  103.           WHEN roll = 2 THEN
  104.             DO
  105.               CALL WRITELN(OUT,"Drat!! I rolled snake eyes I start back at 0")
  106.               COMPUTERTOTAL = 0
  107.               player = user
  108.               CALL DELAY(200)
  109.               RETURN
  110.             END
  111.           WHEN dice.1 = 1 | dice.2 = 1 THEN
  112.             DO
  113.               CALL WRITELN(OUT,"I rolled a one. My turn is over.")
  114.               player = user
  115.               CALL DELAY(200)
  116.               RETURN
  117.             END
  118.           WHEN COMPUTERTOTAL + rolltotal > 150 & firstplayer = "USER" THEN
  119.             DO
  120.               COMPUTERTOTAL = COMPUTERTOTAL + rolltotal
  121.               CALL DELAY(200)
  122.               CALL GAME_END
  123.             END
  124.           OTHERWISE CALL DELAY(100)
  125.         END
  126.       END
  127.     ELSE
  128.       DO WHILE COMPUTERTOTAL + rolltotal < USERTOTAL
  129.         CALL SHOW_DICE
  130.         SELECT
  131.           WHEN roll = 2 THEN
  132.             DO
  133.               COMPUTERTOTAL = 0
  134.               CALL WRITELN(OUT,"Ahhhh!! I rolled snake eyes!! I lost big time. You lucky stiff.")
  135.               CALL DELAY(100)
  136.               CALL GAME_END
  137.             END
  138.           WHEN dice.1 = 1 | dice.2 = 1 THEN
  139.             DO
  140.               CALL WRITELN(OUT,"Not Now! Not a ONE! Ahhhhh. You beat me.")
  141.               CALL DELAY(100)
  142.               CALL GAME_END
  143.             END
  144.           WHEN COMPUTERTOTAL + rolltotal > playertotal THEN
  145.             DO
  146.               COMPUTERTOTAL = COMPUTERTOTAL + rolltotal
  147.               CALL WRITELN(OUT,"Hehehehe. Your not piggy enough, I won!")
  148.               CALL DELAY(100)
  149.               CALL GAME_END
  150.             END
  151.           OTHERWISE CALL DELAY(100)
  152.         END
  153.       END
  154.   END
  155.   COMPUTERTOTAL = rolltotal + COMPUTERTOTAL
  156.   IF COMPUTERTOTAL >= 150 THEN
  157.     DO
  158.       CALL WRITELN(OUT,"OK, it's do or die time for you now!")
  159.       player = user
  160.       CALL DELAY(200)
  161.       RETURN
  162.     END
  163.   CALL WRITELN(OUT,"That's it for me this time.")
  164.   player = user
  165.   CALL DELAY(200)
  166. RETURN
  167.  
  168. USERROLL:
  169.   rolltotal = 0
  170.   CALL GAME_TOTAL
  171.   CALL WRITECH(OUT,"Would you like to roll the dice? Enter=Y/n/q: ")
  172.   DO RollNum = 1
  173.     CALL CLEARLN
  174.     SELECT
  175.       WHEN answer = "N" THEN
  176.         DO
  177.           USERTOTAL = rolltotal + USERTOTAL
  178.           SELECT
  179.             WHEN USERTOTAL >= 150 & firstplayer = "COMPUTER" THEN CALL GAME_END
  180.             WHEN COMPUTERTOTAL >= 150 THEN
  181.               DO
  182.                 IF COMPUTERTOTAL > USERTOTAL THEN CALL WRITELN(OUT,"Giving up are you? Good choice, sucker.")
  183.                 CALL DELAY(200)
  184.                 CALL GAME_END
  185.               END
  186.             WHEN USERTOTAL >= 150 THEN CALL WRITELN(OUT,"YIPES! It's do or die time now!")
  187.             OTHERWISE NOP
  188.           END
  189.           player = computer
  190.           CALL DELAY(200)
  191.           RETURN
  192.         END
  193.       WHEN answer = "Q" THEN
  194.         DO
  195.           CALL WRITELN(OUT,"Chicken, try and play again when you have more guts.")
  196.           CALL DELAY(300)
  197.           CALL FINISHED
  198.         END
  199.       WHEN answer = "Y" | answer = "" | C2X(answer) = '0A' THEN
  200.         DO
  201.           CALL SHOW_DICE
  202.           SELECT
  203.             WHEN roll = 2 THEN
  204.               DO
  205.                 CALL WRITELN(OUT,"Tough break, you rolled snake eyes you start back at 0")
  206.                 USERTOTAL = 0
  207.                 IF COMPUTERTOTAL > 150 THEN
  208.                   DO
  209.                     CALL WRITELN(OUT,"Hehehehe, that roll couldn't have come at a worse time.")
  210.                     CALL WRITELN(OUT,"Man I beat you bad! You shouldn't have been so PIGGY.")
  211.                     CALL DELAY(200)
  212.                     CALL GAME_END
  213.                   END
  214.                 player = computer
  215.                 CALL DELAY(200)
  216.                 RETURN
  217.               END
  218.             WHEN dice.1 = 1 | dice.2 = 1 THEN
  219.               DO
  220.                 IF COMPUTERTOTAL > 150 THEN
  221.                   DO
  222.                     CALL WRITELN(OUT,"Aaawwww, such bad luck. Well that is what you get for being so PIGGY.")
  223.                     CALL DELAY(200)
  224.                     CALL GAME_END
  225.                   END
  226.                 CALL WRITELN(OUT,"You rolled a one, my turn now.")
  227.                 player = computer
  228.                 CALL DELAY(200)
  229.                 RETURN
  230.               END
  231.             OTHERWISE NOP
  232.           END
  233.         END
  234.       WHEN RollNum < 2 THEN
  235.         DO
  236.           CALL WRITECH(OUT,esc'[1AWould you like to roll the dice? Enter=Y/n/q: 'esc'[J')
  237.           RollNum = 0
  238.           ITERATE RollNum
  239.         END
  240.       OTHERWISE
  241.         DO
  242.           CALL WRITECH(OUT,esc'[1AWant to roll again? Enter=Y/n/q: 'esc'[J')
  243.           RollNum = RollNum - 1
  244.           ITERATE RollNum
  245.         END
  246.     END
  247.     CALL WRITECH(OUT,"Want to roll again? Enter=Y/n/q: ")
  248.   END
  249. RETURN
  250.  
  251. SHOW_DICE:
  252.   CALL RANDOM(,, TIME(s))
  253.   dice.1 = RANDOM(1, 6)
  254.   dice.2 = RANDOM(1, 6)
  255.   roll = dice.1 + dice.2
  256.   rolltotal = roll + rolltotal
  257.   CALL GAME_TOTAL
  258.   RANDOM(,, TIME(s))
  259.   q = RANDOM(1,20)
  260.   CALL WRITELN(OUT,quote.q||LF)
  261.   dicepos1 = random(1,40,time(s))
  262.   dicepos2 = random(dicepos1 + 7,75,time(s))
  263.   CALL WRITELN(OUT,esc"[6;"dicepos1"H"esc"[42m     "esc"[6;"dicepos2"H     ")
  264.   CALL WRITELN(OUT,esc"[7;"dicepos1"H"esc"[42m     "esc"[7;"dicepos2"H     ")
  265.   CALL WRITELN(OUT,esc"[8;"dicepos1"H"esc"[42m     "esc"[8;"dicepos2"H     ")
  266.   SELECT
  267.     WHEN dice.1 = 1 THEN CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
  268.     WHEN dice.1 = 2 THEN
  269.       DO
  270.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*")
  271.         CALL WRITELN(OUT,esc"[8;"dicepos1 + 4"H*")
  272.       END
  273.     WHEN dice.1 = 3 THEN
  274.       DO
  275.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*")
  276.         CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
  277.         CALL WRITELN(OUT,esc"[8;"dicepos1 + 4"H*")
  278.       END
  279.     WHEN dice.1 = 4 THEN
  280.       DO
  281.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
  282.         CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
  283.       END
  284.     WHEN dice.1 = 5 THEN
  285.       DO
  286.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
  287.         CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
  288.         CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
  289.       END
  290.     WHEN dice.1 = 6 THEN
  291.       DO
  292.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
  293.         CALL WRITELN(OUT,esc"[7;"dicepos1"H*"esc"[7;"dicepos1 + 4"H*")
  294.         CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
  295.       END
  296.   END
  297.   SELECT
  298.     WHEN dice.2 = 1 THEN CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
  299.     WHEN dice.2 = 2 THEN
  300.       DO
  301.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*")
  302.         CALL WRITELN(OUT,esc"[8;"dicepos2 + 4"H*")
  303.       END
  304.     WHEN dice.2 = 3 THEN
  305.       DO
  306.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*")
  307.         CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
  308.         CALL WRITELN(OUT,esc"[8;"dicepos2 + 4"H*")
  309.       END
  310.     WHEN dice.2 = 4 THEN
  311.       DO
  312.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
  313.         CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
  314.       END
  315.     WHEN dice.2 = 5 THEN
  316.       DO
  317.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
  318.         CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
  319.         CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
  320.       END
  321.     WHEN dice.2 = 6 THEN
  322.       DO
  323.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
  324.         CALL WRITELN(OUT,esc"[7;"dicepos2"H*"esc"[7;"dicepos2 + 4"H*")
  325.         CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
  326.       END
  327.   END
  328.   CALL WRITELN(OUT,esc"[0m")
  329.   IF dice.1 = 1 | dice.2 = 1 THEN rolltotal = 0
  330.   IF Player = "COMPUTER" THEN
  331.   CALL WRITELN(OUT,esc"[10;1HOn roll number" RollNum "the dice came up as:" dice.1 'AND' dice.2 "Current total:" COMPUTERTOTAL + rolltotal)
  332.   ELSE
  333.   CALL WRITELN(OUT,esc"[10;1HOn roll number" RollNum "the dice came up as:" dice.1 'AND' dice.2 "Current total:" USERTOTAL + rolltotal)
  334. RETURN
  335.  
  336. GAME_END:
  337.   CALL GAME_TOTAL
  338.   CALL WRITELN(OUT,"                 We have a winner... and the winner is...."LF)
  339.     CALL DELAY(100)
  340.   IF COMPUTERTOTAL > USERTOTAL THEN
  341.     DO
  342.       CALL WRITELN(OUT,"                             THE COMPUTER!!!!")
  343.       CALL WRITELN(OUT,"Better luck next time.")
  344.     END
  345.   ELSE
  346.     DO
  347.       CALL WRITELN(OUT,"                                   YOU!!!!")
  348.       CALL WRITELN(OUT,"                               Job well done.")
  349.   END
  350.   CALL WRITECH(OUT,COPIES(LF,2)'Want to play again? Enter=Y: 'esc'[J')
  351.   CALL CLEARLN
  352.   IF answer = 'Y' | answer = '' THEN CALL MAIN
  353.   CALL FINISHED
  354. RETURN
  355.  
  356. SHOW_HELP:
  357.   CALL WRITELN(OUT,cls)
  358.   CALL WRITELN(OUT,"The object of the game is to have the highest points at the end of the game.")
  359.   CALL WRITELN(OUT,"The  game  is  played  to  150 points.  Selection of first player is random.")
  360.   CALL WRITELN(OUT,"However the second player always has the last roll."LF)
  361.   CALL WRITELN(OUT,"Points  are  accumulated  by  adding the players current roll total to their")
  362.   CALL WRITELN(OUT,"accumulated  total.  During play if a one is rolled on EITHER dice then that")
  363.   CALL WRITELN(OUT,"player  loses  their  turn  and all points that were accumulated during that")
  364.   CALL WRITELN(OUT,"turn.   If  BOTH  dice are one then the player not only loses their turn and")
  365.   CALL WRITELN(OUT,"all  accumulated points in that turn, but also loses their total accumulated")
  366.   CALL WRITELN(OUT,"points.  (If you roll snake eyes you start over.)"LF)
  367.   CALL WRITELN(OUT,"Once  a  player  has reached 150 points or more and stops rolling the winner")
  368.   CALL WRITELN(OUT,"will be determined after the second player finishes their roll.  If quitting")
  369.   CALL WRITELN(OUT,"player  was  the  second  player  then  a  winner is immediately determined.")
  370.   CALL WRITELN(OUT,"Otherwise  the  second player has one more roll then a winner is determined.")
  371.   CALL WRITELN(OUT,"If you quit the game before you reach 150 you forfeit."LF)
  372.   CALL WRITECH(OUT,"Enter to continue.")
  373.   CALL CLEARLN
  374. RETURN
  375.